package online.inote.common.utils;

import java.util.Date;

/**
 * <p>
 * Desc: String 工具类
 * </p>
 *
 * @author Sui
 * @created: 2017年12月2日 下午11:59:18
 * @version 1.0
 */
public class StringUtils extends org.apache.commons.lang3.StringUtils {

	/**
	  * <p>
	  * Desc: 处理参数输入
	  * </p>
	  *
	  * @author Sui
	  * @created 2017年12月2日 下午11:59:43
	  * @param message
	  * @param o
	  * @return
	  */
	public static String initMessage(String message, Object... o) {
		return MessageFormatter.arrayFormat(message, o).getMessage();
	}
	
	/**
	 * <p>
	 * Desc: 
	 * </p>
	 *
	 * @author XQF SUI
	 * @created 2018年3月9日 下午6:38:13
	 * @param emailContentTemplate
	 * @param nowTimeNormalString
	 * @return
	 */
	public static String initMessage(String message, String... content) {
		return MessageFormatter.arrayFormat(message, content).getMessage();
	}

	/**
	 * <p>
	 * Desc: 首字母大写
	 * </p>
	 *
	 * @author XQF SUI
	 * @created 2017年12月8日 上午11:07:25
	 * @param str
	 * @return
	 */
	public static String upperCase(String str) {  
	    char[] ch = str.toCharArray();  
	    
	    if (ch[0] >= 'a' && ch[0] <= 'z') {  
	        ch[0] = (char) (ch[0] - 32);  
	    }  
	    
	    return new String(ch);  
	}

	/**
	 * <p>
	 * Desc: 是空
	 * </p>
	 *
	 * @author XQF SUI
	 * @created 2018年1月8日 下午4:25:13
	 * @param contents
	 * @return
	 */
	public static boolean isNull(String... contents) {
		
		if (contents == null) {
			return true;
		}
		
		if (contents.length == 0) {
			return true;
		}
		
		for (String content : contents) {
			if (isBlank(content)) {
				return true;
			} else if (content.toLowerCase() == "null") {
				return true;
			}
		}
		
		return false;
	}
	
	/**
	 * <p>
	 * Desc: 不是空
	 * </p>
	 *
	 * @author XQF SUI
	 * @created 2018年1月8日 下午4:28:53
	 * @param contents
	 * @return
	 */
	public static boolean isNotNull(String... contents) {
		return !isNull(contents);
	}
	
	/**
	 * <p>
	 * Desc: 
	 * </p>
	 *
	 * @author Sui
	 * @created 2017年10月24日 下午2:42:25
	 * @param simpleName
	 * @return
	 */
	public static String camelhumpToUnderline(String str) {
		final int size;
		final char[] chars;
		final StringBuilder sb = new StringBuilder((size = (chars = str.toCharArray()).length) * 3 / 2 + 1);
		char c;
		
		for (int i = 0; i < size; i++) {
			c = chars[i];
			if (isUppercaseAlpha(c)) {
				sb.append('_').append(toLowerAscii(c));
			} else {
				sb.append(c);
			}
		}
		
		return sb.charAt(0) == '_' ? sb.substring(1) : sb.toString();
	}
	
	/**
	 * <p>
	 * Desc: 
	 * </p>
	 *
	 * @author Sui
	 * @created 2017年10月24日 下午2:43:14
	 * @param c
	 * @return
	 */
	private static char toLowerAscii(char c) {
		if (isUppercaseAlpha(c)) {
            c += (char) 0x20;
        }
		
        return c;
	}
	
	/**
	 * <p>
	 * Desc: 
	 * </p>
	 *
	 * @author Sui
	 * @created 2017年10月24日 下午2:42:48
	 * @param c
	 * @return
	 */
	private static boolean isUppercaseAlpha(char c) {
		return (c >= 'A') && (c <= 'Z');
	}
	
	/**
	 * <p>
	 * Desc: 
	 * </p>
	 *
	 * @author XQF SUI
	 * @created 2018年1月12日 下午2:51:22
	 * @param source
	 * @param target
	 * @return
	 */
	public static boolean equals(String source, String target) {
		boolean sourceBlank = isBlank(source);
		boolean targetBlank = isBlank(target);
		
		if (sourceBlank && targetBlank) {
			return true;
		}
		
		if (sourceBlank != targetBlank) {
			return false;
		}
		
		if (!sourceBlank) {
			return source.equals(target);
		} else {
			return target.equals(source);
		}
	}

	public static void main(String[] args) {
		System.out.println(initMessage("我的名字叫:[ {} ], 年龄:[ {} ], 出生日期:[ {} ]", "张三", 18, new Date(), "cc"));
	}
}